<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>MyArtifactFilter xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../apidocs/com/agilejava/maven/plugins/overview/logic/MyArtifactFilter.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <strong class="jxr_keyword">package</strong> com.agilejava.maven.plugins.overview.logic;
<a name="2" href="#2">2</a>   
<a name="3" href="#3">3</a>   <strong class="jxr_keyword">import</strong> org.apache.maven.artifact.Artifact;
<a name="4" href="#4">4</a>   <strong class="jxr_keyword">import</strong> org.apache.maven.artifact.resolver.filter.ArtifactFilter;
<a name="5" href="#5">5</a>   <strong class="jxr_keyword">import</strong> org.apache.maven.plugin.logging.Log;
<a name="6" href="#6">6</a>   <strong class="jxr_keyword">import</strong> org.apache.maven.project.MavenProject;
<a name="7" href="#7">7</a>   
<a name="8" href="#8">8</a>   <strong class="jxr_keyword">import</strong> java.util.ArrayList;
<a name="9" href="#9">9</a>   <strong class="jxr_keyword">import</strong> java.util.List;
<a name="10" href="#10">10</a>  
<a name="11" href="#11">11</a>  <strong class="jxr_keyword">import</strong> com.agilejava.maven.plugins.overview.Exclusion;
<a name="12" href="#12">12</a>  
<a name="13" href="#13">13</a>  <em class="jxr_javadoccomment">/**</em>
<a name="14" href="#14">14</a>  <em class="jxr_javadoccomment"> * Artifact filtering.</em>
<a name="15" href="#15">15</a>  <em class="jxr_javadoccomment"> * &lt;p/&gt;</em>
<a name="16" href="#16">16</a>  <em class="jxr_javadoccomment"> * Configured by two lists:</em>
<a name="17" href="#17">17</a>  <em class="jxr_javadoccomment"> * &lt;dl&gt;</em>
<a name="18" href="#18">18</a>  <em class="jxr_javadoccomment"> * &lt;dt&gt;includes&lt;/dt&gt;&lt;dd&gt;List of included &lt;em&gt;groupID&lt;/em&gt;s.&lt;/dd&gt;</em>
<a name="19" href="#19">19</a>  <em class="jxr_javadoccomment"> * &lt;dt&gt;excludes&lt;/dt&gt;&lt;dd&gt;List of excluded &lt;em&gt;ID&lt;/em&gt;s of artifacts.&lt;/dd&gt;</em>
<a name="20" href="#20">20</a>  <em class="jxr_javadoccomment"> * &lt;/dl&gt;</em>
<a name="21" href="#21">21</a>  <em class="jxr_javadoccomment"> * &lt;p/&gt;</em>
<a name="22" href="#22">22</a>  <em class="jxr_javadoccomment"> * Behavior (&lt;code color="green"&gt;true&lt;/code&gt; artifact included,</em>
<a name="23" href="#23">23</a>  <em class="jxr_javadoccomment"> * &lt;code color="red"&gt;false&lt;/code&gt; artifact filtered out):&lt;br/&gt;</em>
<a name="24" href="#24">24</a>  <em class="jxr_javadoccomment"> * if &lt;code&gt;includes&lt;/code&gt; present:</em>
<a name="25" href="#25">25</a>  <em class="jxr_javadoccomment"> * &lt;dl&gt;</em>
<a name="26" href="#26">26</a>  <em class="jxr_javadoccomment"> * &lt;dt&gt;true&lt;/dt&gt;&lt;dd&gt;if artifacts groupID is found in &lt;code&gt;includes&lt;/code&gt; then</em>
<a name="27" href="#27">27</a>  <em class="jxr_javadoccomment"> * &lt;code color="green"&gt;true&lt;/code&gt;, else &lt;code color="red"&gt;false&lt;/code&gt;.&lt;/dd&gt;</em>
<a name="28" href="#28">28</a>  <em class="jxr_javadoccomment"> * &lt;dt&gt;false&lt;/dt&gt;</em>
<a name="29" href="#29">29</a>  <em class="jxr_javadoccomment"> * &lt;dd&gt;if &lt;code&gt;excludes&lt;/code&gt; present:</em>
<a name="30" href="#30">30</a>  <em class="jxr_javadoccomment"> * &lt;dl&gt;</em>
<a name="31" href="#31">31</a>  <em class="jxr_javadoccomment"> * &lt;dt&gt;true&lt;/dt&gt;&lt;dd&gt;if artifacts ID found in &lt;code&gt;excludes&lt;/code&gt; than</em>
<a name="32" href="#32">32</a>  <em class="jxr_javadoccomment"> * &lt;code color="red"&gt;false&lt;/code&gt;, else &lt;code color="green"&gt;true&lt;/code&gt;.&lt;/dd&gt;</em>
<a name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> * &lt;dt&gt;false&lt;/dt&gt;&lt;dd&gt;&lt;code color="green"&gt;true&lt;/code&gt;.&lt;/dd&gt;</em>
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> * &lt;/dl&gt;</em>
<a name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> * &lt;/dd&gt;</em>
<a name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> * &lt;/dl&gt;</em>
<a name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> * &lt;p/&gt;</em>
<a name="38" href="#38">38</a>  <em class="jxr_javadoccomment"> * TODO: due to https://jira.codehaus.org/browse/MSHARED-4 filtering broken.</em>
<a name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> *</em>
<a name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:Hubert.Iwaniuk@gmail.com" target="alexandria_uri">mailto:Hubert.Iwaniuk@gmail.com</a>"&gt;Hubert Iwaniuk&lt;/a&gt;</em>
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> */</em>
<a name="42" href="#42">42</a>  <strong class="jxr_keyword">class</strong> <a href="../../../../../../com/agilejava/maven/plugins/overview/logic/MyArtifactFilter.html">MyArtifactFilter</a> implements ArtifactFilter {
<a name="43" href="#43">43</a>  
<a name="44" href="#44">44</a>    <em class="jxr_javadoccomment">/**</em>
<a name="45" href="#45">45</a>  <em class="jxr_javadoccomment">   * Reference to the root project in the graph -&gt; should always be included</em>
<a name="46" href="#46">46</a>  <em class="jxr_javadoccomment">   */</em>
<a name="47" href="#47">47</a>    <strong class="jxr_keyword">private</strong> MavenProject rootProject; 
<a name="48" href="#48">48</a>  
<a name="49" href="#49">49</a>    <em class="jxr_javadoccomment">/**</em>
<a name="50" href="#50">50</a>  <em class="jxr_javadoccomment">   * List of {@link Exclusion}s.</em>
<a name="51" href="#51">51</a>  <em class="jxr_javadoccomment">   */</em>
<a name="52" href="#52">52</a>    <strong class="jxr_keyword">private</strong> List&lt;Exclusion&gt; exclusions;
<a name="53" href="#53">53</a>    <em class="jxr_javadoccomment">/**</em>
<a name="54" href="#54">54</a>  <em class="jxr_javadoccomment">   * List of included groupIDs.</em>
<a name="55" href="#55">55</a>  <em class="jxr_javadoccomment">   */</em>
<a name="56" href="#56">56</a>    <strong class="jxr_keyword">private</strong> List&lt;String&gt; includes;
<a name="57" href="#57">57</a>    <em class="jxr_javadoccomment">/**</em>
<a name="58" href="#58">58</a>  <em class="jxr_javadoccomment">   * List of included scopes.</em>
<a name="59" href="#59">59</a>  <em class="jxr_javadoccomment">   */</em>
<a name="60" href="#60">60</a>    <strong class="jxr_keyword">private</strong> List&lt;String&gt; scopes;
<a name="61" href="#61">61</a>  
<a name="62" href="#62">62</a>    <em class="jxr_javadoccomment">/**</em>
<a name="63" href="#63">63</a>  <em class="jxr_javadoccomment">   * Ctor setting filtering parameters.</em>
<a name="64" href="#64">64</a>  <em class="jxr_javadoccomment"> * @param rootProject Artifact of root project, this one should never be excluded.</em>
<a name="65" href="#65">65</a>  <em class="jxr_javadoccomment"> * @param includes   List of included groupIDs.</em>
<a name="66" href="#66">66</a>  <em class="jxr_javadoccomment"> * @param exclusions List of {@link Exclusion}s.</em>
<a name="67" href="#67">67</a>  <em class="jxr_javadoccomment"> * @param scopes List of included scopes.</em>
<a name="68" href="#68">68</a>  <em class="jxr_javadoccomment"> * @param log        logger.</em>
<a name="69" href="#69">69</a>  <em class="jxr_javadoccomment">   */</em>
<a name="70" href="#70">70</a>    <strong class="jxr_keyword">public</strong> <a href="../../../../../../com/agilejava/maven/plugins/overview/logic/MyArtifactFilter.html">MyArtifactFilter</a>(
<a name="71" href="#71">71</a>        MavenProject rootProject, <strong class="jxr_keyword">final</strong> List&lt;String&gt; includes, List&lt;Exclusion&gt; exclusions, List&lt;String&gt; scopes, <strong class="jxr_keyword">final</strong> Log log) {
<a name="72" href="#72">72</a>      <strong class="jxr_keyword">this</strong>.rootProject = rootProject;
<a name="73" href="#73">73</a>      <strong class="jxr_keyword">this</strong>.exclusions = exclusions;
<a name="74" href="#74">74</a>      <strong class="jxr_keyword">this</strong>.includes = includes != <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">new</strong> ArrayList&lt;String&gt;(includes) : <strong class="jxr_keyword">null</strong>;
<a name="75" href="#75">75</a>      <strong class="jxr_keyword">this</strong>.scopes = scopes;
<a name="76" href="#76">76</a>      log.debug(
<a name="77" href="#77">77</a>          <span class="jxr_string">"MyArtifactFilter: includes: \'"</span> + includes + <span class="jxr_string">"\'."</span>);
<a name="78" href="#78">78</a>      log.debug(
<a name="79" href="#79">79</a>          <span class="jxr_string">"MyArtifactFilter: excludes: \'"</span> + exclusions + <span class="jxr_string">"\'."</span>);
<a name="80" href="#80">80</a>    }
<a name="81" href="#81">81</a>  
<a name="82" href="#82">82</a>    <em class="jxr_javadoccomment">/**</em>
<a name="83" href="#83">83</a>  <em class="jxr_javadoccomment">   * {@inheritDoc}</em>
<a name="84" href="#84">84</a>  <em class="jxr_javadoccomment">   */</em>
<a name="85" href="#85">85</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> include(Artifact artifact) {
<a name="86" href="#86">86</a>      <strong class="jxr_keyword">return</strong> isIncluded(artifact) &amp; !isExcluded(artifact);
<a name="87" href="#87">87</a>    }
<a name="88" href="#88">88</a>  
<a name="89" href="#89">89</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isIncluded(Artifact artifact) {
<a name="90" href="#90">90</a>  	<em class="jxr_comment">//Check scopes</em>
<a name="91" href="#91">91</a>  	<strong class="jxr_keyword">if</strong> (scopes != <strong class="jxr_keyword">null</strong> &amp;&amp; scopes.size() &gt; 0)
<a name="92" href="#92">92</a>  	{
<a name="93" href="#93">93</a>  		<strong class="jxr_keyword">if</strong> (!isScopeIncluded(artifact)) <strong class="jxr_keyword">return</strong> false;
<a name="94" href="#94">94</a>  	}
<a name="95" href="#95">95</a>  	<em class="jxr_comment">//Check includes </em>
<a name="96" href="#96">96</a>      <strong class="jxr_keyword">boolean</strong> included = false;
<a name="97" href="#97">97</a>      <strong class="jxr_keyword">if</strong> (includes != <strong class="jxr_keyword">null</strong> &amp;&amp; !includes.isEmpty()) {
<a name="98" href="#98">98</a>        <strong class="jxr_keyword">for</strong> (String include : includes) {
<a name="99" href="#99">99</a>          <strong class="jxr_keyword">if</strong> (artifact.getGroupId().startsWith(include)) {
<a name="100" href="#100">100</a>           included = <strong class="jxr_keyword">true</strong>;
<a name="101" href="#101">101</a>           <strong class="jxr_keyword">break</strong>;
<a name="102" href="#102">102</a>         }
<a name="103" href="#103">103</a>       }
<a name="104" href="#104">104</a>     } <strong class="jxr_keyword">else</strong> {
<a name="105" href="#105">105</a>       included = <strong class="jxr_keyword">true</strong>;
<a name="106" href="#106">106</a>     }
<a name="107" href="#107">107</a>     <strong class="jxr_keyword">return</strong> included;
<a name="108" href="#108">108</a>   }
<a name="109" href="#109">109</a> 
<a name="110" href="#110">110</a>     <em class="jxr_javadoccomment">/**</em>
<a name="111" href="#111">111</a> <em class="jxr_javadoccomment">     * Checks if the artifact's scope is in the list of configured scopes</em>
<a name="112" href="#112">112</a> <em class="jxr_javadoccomment">     * @param artifact The artifact to check</em>
<a name="113" href="#113">113</a> <em class="jxr_javadoccomment">     * @return True if the artifact has a scope that is included in scopes, else false. Also true if the artifact is the root node in the diagram or if the artifact has empty scope and the list of configured scopes contain "compile" which is the default scope.</em>
<a name="114" href="#114">114</a> <em class="jxr_javadoccomment">     */</em>
<a name="115" href="#115">115</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isScopeIncluded(Artifact artifact) {
<a name="116" href="#116">116</a> 		<strong class="jxr_keyword">boolean</strong> include = false;
<a name="117" href="#117">117</a> 		<strong class="jxr_keyword">for</strong> (String scope:scopes)
<a name="118" href="#118">118</a> 		{
<a name="119" href="#119">119</a> 			<em class="jxr_comment">//If the artifact matches the root project it should always be included (scope is not relevant)</em>
<a name="120" href="#120">120</a> 			<strong class="jxr_keyword">if</strong> (rootProject != <strong class="jxr_keyword">null</strong> &amp;&amp; rootProject.getGroupId().equals(artifact.getGroupId()) &amp;&amp; rootProject.getArtifactId().equals(artifact.getArtifactId()))
<a name="121" href="#121">121</a> 			{
<a name="122" href="#122">122</a> 				include = <strong class="jxr_keyword">true</strong>;
<a name="123" href="#123">123</a> 			}
<a name="124" href="#124">124</a> 			<strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (artifact.getScope() == <strong class="jxr_keyword">null</strong> &amp;&amp; scope.equals(<span class="jxr_string">"compile"</span>))
<a name="125" href="#125">125</a> 			{
<a name="126" href="#126">126</a> 				include = <strong class="jxr_keyword">true</strong>;
<a name="127" href="#127">127</a> 			}
<a name="128" href="#128">128</a> 			<strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (artifact.getScope() != <strong class="jxr_keyword">null</strong> &amp;&amp; artifact.getScope().equals(scope))
<a name="129" href="#129">129</a> 			{
<a name="130" href="#130">130</a> 				include = <strong class="jxr_keyword">true</strong>;
<a name="131" href="#131">131</a> 			}
<a name="132" href="#132">132</a> 		}
<a name="133" href="#133">133</a> 		<strong class="jxr_keyword">return</strong> include;
<a name="134" href="#134">134</a> 	}
<a name="135" href="#135">135</a> 
<a name="136" href="#136">136</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isExcluded(Artifact artifact) {
<a name="137" href="#137">137</a>     <strong class="jxr_keyword">boolean</strong> excluded = false;
<a name="138" href="#138">138</a>     <strong class="jxr_keyword">if</strong> (exclusions != <strong class="jxr_keyword">null</strong> &amp;&amp; !exclusions.isEmpty()) {
<a name="139" href="#139">139</a>       <strong class="jxr_keyword">for</strong> (Exclusion exclusion : exclusions) {
<a name="140" href="#140">140</a>         <strong class="jxr_keyword">if</strong> (exclusion.matches(artifact)) {
<a name="141" href="#141">141</a>           excluded = <strong class="jxr_keyword">true</strong>;
<a name="142" href="#142">142</a>           <strong class="jxr_keyword">break</strong>;
<a name="143" href="#143">143</a>         }
<a name="144" href="#144">144</a>       }
<a name="145" href="#145">145</a>     } <strong class="jxr_keyword">else</strong> {
<a name="146" href="#146">146</a>       excluded = false;
<a name="147" href="#147">147</a>     }
<a name="148" href="#148">148</a>     <strong class="jxr_keyword">return</strong> excluded;
<a name="149" href="#149">149</a>   }
<a name="150" href="#150">150</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

